With the development of science and technology, mobile phones show a personal computerized development trend, which requires more and more dynamic application files. Mobile phones are generally divided into smart phones and feather phones. Smart phones, such as wince operating system and ulinux operating system, etc, basically realize dynamic loading technology, such as a dynamic link library of a Windows operating system or a dynamically shared file of a linux operating system which can be dynamically loaded on a Personal Computer (PC); while most of the feather phones are developed based on the embedded microkernel operating system, and dynamic loading technology has not yet been implemented on most of the embedded operating systems.
So far, the market share of feather phones is still high, and there are generally two application development modes for feather phones: one mode is to use JAVA language, and the other mode is statically linked to a version. Wherein JAVA is an explanatory language and slow in operating speed, and meanwhile requires support from JAVA virtual machine; while for compiling and generating an executable file by static link between a traditional application and a mobile phone version, the larger the file, the larger the required capacity of the hardware resource, such as the Random Access Memory (RAM) or the nonvolatile or NOR FLASH, and since the code will be frequently modified in the debugging process, the overall mobile phone version has to be re-linked, burned and loaded each time that the code is modified, thus modifying the code takes even more time than debugging the code, which seriously affects the efficiency of application development and debugging. In addition, when the code is directly run on a mobile phone having NOR FLASH, the above phenomenon is even more serious since the burning time is long, and the efficiencies of application development and debugging are particularly low. Meanwhile, the telecom operators have demand on dynamically upgrading an application, while the statically linked application cannot be dynamically upgraded.
Presently, the dynamic linking technology is implemented in the microkernel operating system, which improves the software development efficiency, the loading is performed as required in order to save hardware resources, and new functions can be added to a mobile phone at any time. Wherein the dynamic loading process mainly comprises three processes: calculating and allocating memory required for loading the code, symbol analyzing and code relocating. However, in the prior art, during the relocation process, when the address distance between a function caller and a callee is too far and exceeds a range of the short skipping, it will cause failure in dynamic loading, or error in dynamic loading of the dynamic application file.